package com.alks.function.mapper.produce;

import com.alks.entity.data.entity.PcCuttingDispatchOther;
import com.alks.entity.data.entity.PcCuttingDispatchOtherD;
import com.alks.entity.data.entity.SdStyleProcessNew;
import com.alks.function.data.dto.produce.DispatchOtherTempDto;
import com.alks.function.data.dto.produce.DispatchTempDto;
import com.alks.function.data.request.produce.DisOthHeadRequest;
import com.alks.function.data.request.produce.DisOthTempRequest;
import com.alks.function.data.request.produce.SuppDispatchPrintRequest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ms
 * @since 2024-07-03
 */
@Mapper
public interface PcCuttingDispatchOtherMapper extends BaseMapper<PcCuttingDispatchOther> {

    /** 派工主页数据展示
     * @param request 查询条件
     * @param companyId 公司ID
     * @param processCode 工艺ID
     * @return 派工主页数据
     */
    List<DispatchOtherTempDto> dispatchHeadList(@Param("request") DisOthHeadRequest request, @Param("companyId") String companyId, @Param("processCode") String processCode);


    /**
     * 工序回显
     *
     * @param slipNo      补单号
     * @param process     工序
     * @param processCode 工艺ID
     * @param companyId   公司ID
     * @return 工序
     */
    List<SdStyleProcessNew> dispatchTempProcessBack(@Param("slipNo") String slipNo, @Param("process") String process, @Param("processCode") String processCode, @Param("companyId") String companyId);

    /**
     * 号码回显
     * @param slipNo 补单号
     * @param sizeNo 号码
     * @param processCode 工艺ID
     * @param companyId 公司ID
     * @return 号码
     */
    List<String> dispatchTempSizeBack(@Param("slipNo") String slipNo, @Param("sizeNo") String sizeNo, @Param("processCode") String processCode, @Param("companyId") String companyId);

    /**
     * 补单派工数据查询
     * @param request 查询条件
     * @param processCode 工艺ID
     * @param companyId 公司ID
     * @return 派工数据
     */
    //MS TODO 2024/7/24 : 重写SQL语句
    List<DispatchTempDto> dispatchTempQuery(@Param("request") DisOthTempRequest request, @Param("processCode") String processCode, @Param("companyId") String companyId);

    /**
     * 派工单打印数据查询
     * @param request 查询条件
     * @param processCode 工艺ID
     * @param companyId 公司ID
     * @return 派工单打印数据
     */
    List<Map<String, Object>> suppDispatchPrintTempQuery(@Param("request") SuppDispatchPrintRequest request, @Param("processCode") String processCode, @Param("companyId") String companyId);

    /**
     * 查询派工重复数量
     *
     * @param temps     派工数据
     * @param companyId 公司ID
     * @return 重复数量
     */
    PcCuttingDispatchOtherD rptDispatchQuery(@Param("temps") List<DispatchTempDto> temps, @Param("companyId") String companyId);

    /**
     * 获取已完成工艺集合
     * @param slipNo 补单号
     * @param process 工艺
     * @param processCode 工序ID
     * @param companyId 公司ID
     * @return 已完成工艺集合
     */
    Set<String> fullProcessQuery(@Param("slipNo") String slipNo, @Param("process") String process, @Param("processCode") String processCode, @Param("companyId") String companyId);
}
